package com.jrx.anytxn.transaction.dto.loan;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jrx.anytxn.transaction.constant.TransBizConstant;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

public class LoanBillQueryRes implements Serializable {

    /**
     * 当期总金额
     */
    private BigDecimal currentAmount = BigDecimal.ZERO;

    /**
     * 逾期总金额
     */
    private BigDecimal delqAmount = BigDecimal.ZERO;

    /**
     * 当期利息余额
     */
    private BigDecimal interestAmount = BigDecimal.ZERO;

    /**
     * 当期本金金额
     */
    private BigDecimal principalAmount = BigDecimal.ZERO;

    /**
     * 总欠款
     */
    private BigDecimal totalAmount = BigDecimal.ZERO;
    /**
     * 剩余应还本金
     */
    private BigDecimal remainAmt = BigDecimal.ZERO;

    /**
     * 罚息日利率
     */
    private BigDecimal penaltyDailyRate = BigDecimal.ZERO;

    /**
     * 本期账单还款日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date paymentDate;

    /**
     * 客户还款日
     */
    private Integer paymentDd;

    /**
     * 是否可做账单分期 1是 0否
     */
    private String canStaging = TransBizConstant.NO_FLAG;

    /**
     * 是否逾期 1是 0否
     */
    private String hasDelq = TransBizConstant.NO_FLAG;

    /**
     * 是否可还款 0否 1是
     */
    private String canPayment = TransBizConstant.NO_FLAG;

    /**
     * 逾期日期 没有逾期时为空
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date delqDate;

    /**
     * 罚息金额
     */
    private BigDecimal penaltyAmount = BigDecimal.ZERO;;

    /**
     * 复利金额
     */
    private BigDecimal compoundAmount = BigDecimal.ZERO;;

    /**
     * 逾期天数
     */
    private Integer delqDays;

    /**
     * 本期账单日期
     */
    private Date statementDate;

    /**
     * 下期账单日期
     */
    private Date nextStatementDate;

    /**
     * 下期账单还款日
     */
    private Date nextPaymentDate;

    /**
     * 下期账单金额
     */
    private BigDecimal nextStatementAmount = BigDecimal.ZERO;

    /**
     * 账单状态
     */
    private String monthStatus;

    /**
     * 可账单分期金额 不可账单分期时为0
     */
    private BigDecimal canStagingAmount = BigDecimal.ZERO;

    /**
     * 还款金额
     */
    private BigDecimal paymentAmount = BigDecimal.ZERO;

    /**
     * 系统当前日期
     */
    private Date today;

    /**
     * 订单笔数
     */
    private Integer orderCount;

    /**
     * 逾期笔数
     */
    private Integer delqCount;

    public BigDecimal getCurrentAmount() {
        return currentAmount;
    }

    public void setCurrentAmount(BigDecimal currentAmount) {
        this.currentAmount = currentAmount;
    }

    public BigDecimal getDelqAmount() {
        return delqAmount;
    }

    public void setDelqAmount(BigDecimal delqAmount) {
        this.delqAmount = delqAmount;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getPenaltyDailyRate() {
        return penaltyDailyRate;
    }

    public void setPenaltyDailyRate(BigDecimal penaltyDailyRate) {
        this.penaltyDailyRate = penaltyDailyRate;
    }

    public Date getPaymentDate() {
        return paymentDate;
    }

    public void setPaymentDate(Date paymentDate) {
        this.paymentDate = paymentDate;
    }

    public Integer getPaymentDd() {
        return paymentDd;
    }

    public void setPaymentDd(Integer paymentDd) {
        this.paymentDd = paymentDd;
    }

    public String getCanStaging() {
        return canStaging;
    }

    public void setCanStaging(String canStaging) {
        this.canStaging = canStaging;
    }

    public String getHasDelq() {
        return hasDelq;
    }

    public void setHasDelq(String hasDelq) {
        this.hasDelq = hasDelq;
    }

    public Date getDelqDate() {
        return delqDate;
    }

    public void setDelqDate(Date delqDate) {
        this.delqDate = delqDate;
    }

    public String getCanPayment() {
        return canPayment;
    }

    public void setCanPayment(String canPayment) {
        this.canPayment = canPayment;
    }

    public BigDecimal getPenaltyAmount() {
        return penaltyAmount;
    }

    public void setPenaltyAmount(BigDecimal penaltyAmount) {
        this.penaltyAmount = penaltyAmount;
    }

    public BigDecimal getCompoundAmount() {
        return compoundAmount;
    }

    public void setCompoundAmount(BigDecimal compoundAmount) {
        this.compoundAmount = compoundAmount;
    }

    public Integer getDelqDays() {
        return delqDays;
    }

    public void setDelqDays(Integer delqDays) {
        this.delqDays = delqDays;
    }

    public Date getStatementDate() {
        return statementDate;
    }

    public void setStatementDate(Date statementDate) {
        this.statementDate = statementDate;
    }

    public Date getNextStatementDate() {
        return nextStatementDate;
    }

    public void setNextStatementDate(Date nextStatementDate) {
        this.nextStatementDate = nextStatementDate;
    }

    public Date getNextPaymentDate() {
        return nextPaymentDate;
    }

    public void setNextPaymentDate(Date nextPaymentDate) {
        this.nextPaymentDate = nextPaymentDate;
    }

    public BigDecimal getNextStatementAmount() {
        return nextStatementAmount;
    }

    public void setNextStatementAmount(BigDecimal nextStatementAmount) { this.nextStatementAmount = nextStatementAmount; }

    public String getMonthStatus() {
        return monthStatus;
    }

    public void setMonthStatus(String monthStatus) { this.monthStatus = monthStatus; }

    public BigDecimal getCanStagingAmount() {
        return canStagingAmount;
    }

    public void setCanStagingAmount(BigDecimal canStagingAmount) {
        this.canStagingAmount = canStagingAmount;
    }

    public BigDecimal getPaymentAmount() {
        return paymentAmount;
    }

    public void setPaymentAmount(BigDecimal paymentAmount) {
        this.paymentAmount = paymentAmount;
    }

    public Date getToday() { return today; }

    public void setToday(Date today) { this.today = today; }

    public Integer getOrderCount() { return orderCount; }

    public void setOrderCount(Integer orderCount) { this.orderCount = orderCount; }

    public Integer getDelqCount() { return delqCount; }

    public void setDelqCount(Integer delqCount) { this.delqCount = delqCount; }

    /**
     * 获取 剩余应还本金
     *
     * @return remainAmt 剩余应还本金
     */
    public BigDecimal getRemainAmt() {
        return this.remainAmt;
    }

    /**
     * 设置 剩余应还本金
     *
     * @param remainAmt 剩余应还本金
     */
    public void setRemainAmt(BigDecimal remainAmt) {
        this.remainAmt = remainAmt;
    }

    /**
     * 获取 当期利息余额
     *
     * @return interestAmount 当期利息余额
     */
    public BigDecimal getInterestAmount() {
        return this.interestAmount;
    }

    /**
     * 设置 当期利息余额
     *
     * @param interestAmount 当期利息余额
     */
    public void setInterestAmount(BigDecimal interestAmount) {
        this.interestAmount = interestAmount;
    }

    /**
     * 获取 当期本金金额
     *
     * @return principalAmount 当期本金金额
     */
    public BigDecimal getPrincipalAmount() {
        return this.principalAmount;
    }

    /**
     * 设置 当期本金金额
     *
     * @param principalAmount 当期本金金额
     */
    public void setPrincipalAmount(BigDecimal principalAmount) {
        this.principalAmount = principalAmount;
    }
}
